[PHP5, OOP] Eigenen Methodennamen herausfinden oder von welcher Methode aufgerufen wurde
Hallo,
ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
bekommen. Beispiel:
class Names
{
function myName()
{
// hier soll "myName" ausgegeben werden
}
}
Oder: Es soll der Namen der aufrufenden Methode ausgegeben werden.
Beispiel
class Names
{
function MyName()
{
// hier soll "callMyName" ausgegeben werden
}
function callMyName()
{
$this->MyName();
}
Gibt es da ene Möglichkeit?
gruß
Christian
Re: [PHP5, OOP] Eigenen Methodennamen herausfinden oder von welcherMethode aufgerufen wurde
Christian Schmidt wrote:
> Hallo,
>
> ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
> bekommen. Beispiel:
> Oder: Es soll der Namen der aufrufenden Methode ausgegeben werden.
> Beispiel
[...]
> Gibt es da ene Möglichkeit?
Ja, siehe debug_backtrace: http://www.php.net/debug-backtrace.
Wenn Dein Konzept stimmt solltest Du so etwas auch nur zur Fehlersuche
und -Analyse benötigen.
Gruß
Heiko
--
http://portal.richler.de/ Namensportal zu Richler
http://www.richler.de/ Heiko Richler: Computer - Know How!
http://www.richler.info/ private Homepage
PHP und XML-RPC (was: Re: Eigenen Methodennamen herausfinden oder von welcher Methode aufgerufen wur
On 2 Sep., 17:57, Heiko Richler <heiko-rich... [at] nefkom.net> wrote:
> Christian Schmidt wrote:
> > Hallo,
>
> > ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
> > bekommen. Beispiel:
> > Oder: Es soll der Namen der aufrufenden Methode ausgegeben werden.
> > Beispiel
> [...]
> > Gibt es da eine Möglichkeit?
>
> Ja, siehe debug_backtrace:http://www.php.net/debug-backtrace.
>
> Wenn Dein Konzept stimmt solltest Du so etwas auch nur zur Fehlersuche
> und -Analyse benötigen.
ok, dann ist mein Konzept wohl falsch :-)
Ich erkläre mal den Hintergrund.
Meine Klasse ist sozusagen ein Wrapper für eine XML-RPC-API.
=DCber XML-RPC hole ich eine Liste der unterstützten Methoden
("server.listMethods"), diese schreibe ich in ein Array.
Theoretisch kann sich die Liste der unterstützten Methoden ständig
ändern (zB wird eine M. wegen Wartungsarbeiten abgeschaltet). Ich
könnte natürlich jetzt einfach die Methode aufrufen und bekomme dann
eben ein 400/Method not supported zurück. Das würde ich gerne
vermeiden.
Meine Wrapper-Methode soll also prüfen ob sie auf dem Server verfügbar
ist, indem sie Ihren eigenen Namen gegen das o.g. array vergleicht.
Steht sie drin ist alles ok, sonst wird eine Exception geworfen.
Die Alternative war, die Wrapper-Methode ruft ein
"CheckIfMethodIsSupported"-Methode auf, diese erkennt dann welche
Methode den Check aufgerufen hat und prüft dann deren Namen gegen das
array.
Dadurch wollte ich mir "unnötige" Anfragen an den XML-RPC-Server
sparen.
Ist das totaler Quatsch oder wie macht man sowas "normalerweise"?
Gruß
Christian
Re: Eigenen Methodennamen herausfinden oder von welcher Methode aufgerufen wurde
On 2 Sep., 17:57, Heiko Richler <heiko-rich... [at] nefkom.net> wrote:
> Christian Schmidt wrote:
> > Hallo,
>
> > ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
> > bekommen. Beispiel:
> > Oder: Es soll der Namen der aufrufenden Methode ausgegeben werden.
> > Beispiel
> [...]
> > Gibt es da ene Möglichkeit?
>
> Ja, siehe debug_backtrace:http://www.php.net/debug-backtrace.
>
> Wenn Dein Konzept stimmt solltest Du so etwas auch nur zur Fehlersuche
> und -Analyse benötigen.
Kleiner Nachtrag:
=DCber Deinen Tipp mit dem debug_backtrace hab ich endlich die "magic
constants"-Seite in der Doku gefunden, die ich vorher schon erfolglos
gesucht hatte. Es gibt "__METHOD__", was genau das macht, was ich
brauche.
Gruß
Christian
Re: PHP und XML-RPC (was: Re: Eigenen Methodennamen herausfinden oder von welcher Methode aufgerufen
Christian Schmidt schrieb:
>Ist das totaler Quatsch oder wie macht man sowas "normalerweise"?
Evtl. ist
http://de.php.net/manual/de/language.oop5.overloading.php#la nguage.oop5.overloading.methods
etwas für dich.
--
Wolfgang Fellger
Re: [PHP5, OOP] Eigenen Methodennamen herausfinden oder von welcherMethode aufgerufen wurde
Christian Schmidt schrieb:
> ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
> bekommen. Beispiel:
[..]
> Gibt es da ene Möglichkeit?
Ja, die magischen Konstanten __FUNCTION__ und __METHOD__
Siehe: http://www.php.net/manual/en/language.constants.predefined.p hp
Gruß,
Torsten